<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>


        // 作用域链   变量的访问机制
        //    访问变量的时候,先看当前作用域下时候声明这个变量,如果有就使用自己的   结束了
        //    如果当前作用域下没有声明这个变量,就去上一层去查找,找到就使用这个变量  结束了
        //    上上一层 ...
        //    全局变量也没有    报错   is not defined





        // 访问一个对象的属性的时候，不会报错  如果有这个属性就访问这个属性的值 ， 如果没有 也不会报错 undefined
        // 访问一个对象的方法的时候  这个方法undefined  不是函数   is not a function

        var a = 1 ;
        
        function f() {
            var a = 2 ;
            console.log(a);
            ff()
            function ff() {
                console.log(a);   // 2
                // console.log(b);   // 报错  is not defined
            }
        }

        f()


        console.log(f.q);



        var c = 2 ;
        {
            let c = 3 ;
            console.log(c);    // 3
            {
                let c = 4 ;
                console.log(c);   // 4
            }

            console.log(c);   // 3
        }









        function Person(name , age) {
            this.name = name ;
            this.age = age ;
            this.fn = function() {
                console.log(1);
            }
        }
        Person.prototype.fn = function() {
            console.log(2);
        }

        const p1 = new Person('cc'  ,20) ;
        p1.fn()

        console.log(p1.name);
        console.log(p1.age);
        console.log(p1.sex);   // undefined

        // p1.say()    say是undefined  不是函数

    </script>
    
</body>
</html>